﻿using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Collections.Generic;

namespace ControlPresupuesto
{
    public partial class FrmCargarFormularios : Form
    {
        /// <summary>
        /// <para>Este formulario inicializa y registra todos los formularios (Previamenet registrados en el metodo cargarFormularios_Shown(object sender, EventArgs e)) en la clase Redirect.</para>
        /// <para>Este metodo mejora considerablemente el rendimiento del aplicativo en cuanto a la inicializacion de los formularios.</para>
        /// </summary>
        public FrmCargarFormularios()
        {
            InitializeComponent();
        }

        private void cargarFormularios_Shown(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {

                ControlPresupuestoDataSet.spSeguridadMenuDataTable table = new ControlPresupuestoDataSet.spSeguridadMenuDataTable();

                this.spSeguridadMenuTableAdapter1.FillBy(
                    table,
                    "SelectMenuUsuarioActual",
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null
                );

                this.progressBar1.Maximum = table.Rows.Count;
                this.progressBar1.Step = 1;

                //--- Cargo UNICAMENTE LOS FORMULARIOS Habilitados a la lista
                foreach (ControlPresupuestoDataSet.spSeguridadMenuRow row in table.Rows)
                {
                    if (row.MenuHabilitado && !row.Formulario.Contains(" "))
                    {
                        try { ManageForms.addNewForm(ManageForms.NameSpace + row.Formulario); }
                        catch (Exception) { MessageBox.Show("El Formulario: \"" + row.Formulario + "\", asociado a la opcion de menu: \"" + row.etiqueta.Replace("&", "") + "\" No pudo cargarse Con Exito, Verifique!.\n\nNameSpace: " + ManageForms.NameSpace + ""); }
                        this.progressBar1.PerformStep();
                    }
                }

                Cursor.Current = Cursors.Default;
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Ultimo formulario cargado con exito: " + formu);
                MessageException.show(ex);
                ControlPresupuesto.MessageException.show(ex);
                ManageForms.closeAllForms();
            }
            this.Close();
        }
    }
}
